/*
This Source Code Form is subject to the terms of the Mozilla Public
License, v. 2.0. If a copy of the MPL was not distributed with this
file, You can obtain one at http://mozilla.org/MPL/2.0/.

Copyright (c) 2023-present Kaleidos INC
*/

@import url("tools/typography.css");

@define-mixin vertical-menu $prefix {
  .$(prefix)-title {
    @mixin font-small;

    color: var(--color-gray90);
    font-weight: var(--font-weight-medium);
    margin: 0;
    padding-block: var(--spacing-16) var(--spacing-12);
    padding-inline: var(--spacing-16);
    text-transform: uppercase;
  }

  .$(prefix)-menu,
  .$(prefix)-submenu {
    list-style: none;
    margin: 0;
    padding: 0;
  }

  .$(prefix)-menu-item {
    @mixin font-inline;

    color: var(--color-gray70);
    margin-block-end: 0;
  }

  .$(prefix)-menu-anchor {
    border-radius: 3px;
    color: currentColor;
    display: block;
    font-weight: var(--font-weight-regular);
    padding-block: var(--spacing-8);
    padding-inline: var(--spacing-16);

    &:hover {
      background: var(--color-gray20);
      color: var(--color-secondary80);
    }

    &.active {
      background: var(--color-gray20);
      color: var(--color-secondary80);
      font-weight: var(--font-weight-medium);

      & + .$(prefix)-submenu {
        background: var(--color-gray20);
      }
    }

    &:focus-visible {
      box-shadow: inset 0 0 0 2px var(--color-secondary);
      outline: 0;
    }

    &:focus:not(:focus-visible) {
      box-shadow: none;
      outline: none;
    }
  }

  .$(prefix)-submenu {
    padding-block-end: var(--spacing-8);
    padding-inline: var(--spacing-16) var(--spacing-8);
  }

  .$(prefix)-submenu-item {
    margin-block-end: 0;
  }

  .$(prefix)-submenu-anchor {
    @mixin font-small;

    border-inline-start: 3px solid var(--color-gray30);
    color: var(--color-gray80);
    display: block;
    font-weight: var(--font-weight-medium);
    padding-block: var(--spacing-8);
    padding-inline: var(--spacing-12);

    &:hover {
      background: var(--color-gray30);
      border-inline-start-color: var(--color-gray30);
      color: var(--color-secondary80);
    }

    &.active {
      background: var(--color-gray20);
      border-inline-start-color: var(--color-secondary80);
      color: var(--color-secondary80);

      &:hover {
        background: var(--color-gray30);
      }
    }
  }
}
